package com.petdog.module.admin.dto;

import java.util.List;

public class AdminDashboardDto {
    // 核心指标数字卡片
    private Long totalUsers;          // 总用户数
    private Long todayNewUsers;       // 今日新增用户数
    private Long totalPets;           // 总宠物数
    private Long totalCommunities;    // 总社区数
    private Long activeCommunities;   // 活跃社区数
    private Long totalPosts;          // 总内容数
    private Long todayNewPosts;       // 今日新增内容数
    private Long todayRecognitions;   // 今日识别次数
    private Long totalRecognitions;   // 总识别次数
    private Long todayActiveUsers;    // 今日活跃用户数
    private Double averageActiveRate; // 平均活跃度
    private Double recognitionAccuracy; // 识别准确率
    private Double recognitionInterceptRate; // 识别拦截率
    
    // 时间序列数据
    private List<DailyStat> dailyStats; // 按日统计数据
    
    // 图表数据
    private ContentDistributionDto contentDistribution; // 内容发布分布
    private CommunityActivityDto communityActivity;     // 社区活跃度
    private AiRecognitionDataDto aiRecognitionData;     // AI识别数据
    
    // Getters and Setters for AdminDashboardDto
    public Long getTotalUsers() {
        return totalUsers;
    }
    
    public void setTotalUsers(Long totalUsers) {
        this.totalUsers = totalUsers;
    }
    
    public Long getTodayNewUsers() {
        return todayNewUsers;
    }
    
    public void setTodayNewUsers(Long todayNewUsers) {
        this.todayNewUsers = todayNewUsers;
    }
    
    public Long getTotalPets() {
        return totalPets;
    }
    
    public void setTotalPets(Long totalPets) {
        this.totalPets = totalPets;
    }
    
    public Long getTotalCommunities() {
        return totalCommunities;
    }
    
    public void setTotalCommunities(Long totalCommunities) {
        this.totalCommunities = totalCommunities;
    }
    
    public Long getActiveCommunities() {
        return activeCommunities;
    }
    
    public void setActiveCommunities(Long activeCommunities) {
        this.activeCommunities = activeCommunities;
    }
    
    public Long getTotalPosts() {
        return totalPosts;
    }
    
    public void setTotalPosts(Long totalPosts) {
        this.totalPosts = totalPosts;
    }
    
    public Long getTodayNewPosts() {
        return todayNewPosts;
    }
    
    public void setTodayNewPosts(Long todayNewPosts) {
        this.todayNewPosts = todayNewPosts;
    }
    
    public Long getTodayRecognitions() {
        return todayRecognitions;
    }
    
    public void setTodayRecognitions(Long todayRecognitions) {
        this.todayRecognitions = todayRecognitions;
    }
    
    public Long getTotalRecognitions() {
        return totalRecognitions;
    }
    
    public void setTotalRecognitions(Long totalRecognitions) {
        this.totalRecognitions = totalRecognitions;
    }
    
    public Long getTodayActiveUsers() {
        return todayActiveUsers;
    }
    
    public void setTodayActiveUsers(Long todayActiveUsers) {
        this.todayActiveUsers = todayActiveUsers;
    }
    
    public Double getAverageActiveRate() {
        return averageActiveRate;
    }
    
    public void setAverageActiveRate(Double averageActiveRate) {
        this.averageActiveRate = averageActiveRate;
    }
    
    public Double getRecognitionAccuracy() {
        return recognitionAccuracy;
    }
    
    public void setRecognitionAccuracy(Double recognitionAccuracy) {
        this.recognitionAccuracy = recognitionAccuracy;
    }
    
    public Double getRecognitionInterceptRate() {
        return recognitionInterceptRate;
    }
    
    public void setRecognitionInterceptRate(Double recognitionInterceptRate) {
        this.recognitionInterceptRate = recognitionInterceptRate;
    }
    
    public List<DailyStat> getDailyStats() {
        return dailyStats;
    }
    
    public void setDailyStats(List<DailyStat> dailyStats) {
        this.dailyStats = dailyStats;
    }
    
    public ContentDistributionDto getContentDistribution() {
        return contentDistribution;
    }
    
    public void setContentDistribution(ContentDistributionDto contentDistribution) {
        this.contentDistribution = contentDistribution;
    }
    
    public CommunityActivityDto getCommunityActivity() {
        return communityActivity;
    }
    
    public void setCommunityActivity(CommunityActivityDto communityActivity) {
        this.communityActivity = communityActivity;
    }
    
    public AiRecognitionDataDto getAiRecognitionData() {
        return aiRecognitionData;
    }
    
    public void setAiRecognitionData(AiRecognitionDataDto aiRecognitionData) {
        this.aiRecognitionData = aiRecognitionData;
    }
    
    public static class DailyStat {
        private String date;            // 日期
        private Long userCount;         // 用户数
        private Long postCount;         // 内容数
        private Long recognitionCount;  // 识别次数
        private Long commentCount;      // 评论数
        private Long likeCount;         // 点赞数
        private Long activeUserCount;   // 活跃用户数
        
        // Getters and Setters for DailyStat
        public String getDate() {
            return date;
        }
        
        public void setDate(String date) {
            this.date = date;
        }
        
        public Long getUserCount() {
            return userCount;
        }
        
        public void setUserCount(Long userCount) {
            this.userCount = userCount;
        }
        
        public Long getPostCount() {
            return postCount;
        }
        
        public void setPostCount(Long postCount) {
            this.postCount = postCount;
        }
        
        public Long getRecognitionCount() {
            return recognitionCount;
        }
        
        public void setRecognitionCount(Long recognitionCount) {
            this.recognitionCount = recognitionCount;
        }
        
        public Long getCommentCount() {
            return commentCount;
        }
        
        public void setCommentCount(Long commentCount) {
            this.commentCount = commentCount;
        }
        
        public Long getLikeCount() {
            return likeCount;
        }
        
        public void setLikeCount(Long likeCount) {
            this.likeCount = likeCount;
        }
        
        public Long getActiveUserCount() {
            return activeUserCount;
        }
        
        public void setActiveUserCount(Long activeUserCount) {
            this.activeUserCount = activeUserCount;
        }
    }
    
    public static class ContentDistributionDto {
        private List<String> categories; // 内容类别
        private List<Long> postCounts;   // 帖子数量
        private List<Long> commentCounts;// 评论数量
        private List<Long> likeCounts;   // 点赞数量
        
        // Getters and Setters for ContentDistributionDto
        public List<String> getCategories() {
            return categories;
        }
        
        public void setCategories(List<String> categories) {
            this.categories = categories;
        }
        
        public List<Long> getPostCounts() {
            return postCounts;
        }
        
        public void setPostCounts(List<Long> postCounts) {
            this.postCounts = postCounts;
        }
        
        public List<Long> getCommentCounts() {
            return commentCounts;
        }
        
        public void setCommentCounts(List<Long> commentCounts) {
            this.commentCounts = commentCounts;
        }
        
        public List<Long> getLikeCounts() {
            return likeCounts;
        }
        
        public void setLikeCounts(List<Long> likeCounts) {
            this.likeCounts = likeCounts;
        }
    }
    
    public static class CommunityActivityDto {
        private List<String> labels;      // 活跃度标签（活跃、非活跃等）
        private List<Long> values;        // 对应数量
        private List<String> colors;      // 饼图颜色
        
        // Getters and Setters for CommunityActivityDto
        public List<String> getLabels() {
            return labels;
        }
        
        public void setLabels(List<String> labels) {
            this.labels = labels;
        }
        
        public List<Long> getValues() {
            return values;
        }
        
        public void setValues(List<Long> values) {
            this.values = values;
        }
        
        public List<String> getColors() {
            return colors;
        }
        
        public void setColors(List<String> colors) {
            this.colors = colors;
        }
    }
    
    public static class AiRecognitionDataDto {
        private Long totalRecognitionCount;    // 总识别次数
        private Long successRecognitionCount;  // 成功识别次数
        private Long interceptedCount;         // 拦截次数
        private Double accuracyRate;           // 准确率
        private Double interceptRate;          // 拦截率
        private List<String> breedLabels;      // 品种标签
        private List<Long> breedCounts;        // 各品种识别数量
        
        // Getters and Setters for AiRecognitionDataDto
        public Long getTotalRecognitionCount() {
            return totalRecognitionCount;
        }
        
        public void setTotalRecognitionCount(Long totalRecognitionCount) {
            this.totalRecognitionCount = totalRecognitionCount;
        }
        
        public Long getSuccessRecognitionCount() {
            return successRecognitionCount;
        }
        
        public void setSuccessRecognitionCount(Long successRecognitionCount) {
            this.successRecognitionCount = successRecognitionCount;
        }
        
        public Long getInterceptedCount() {
            return interceptedCount;
        }
        
        public void setInterceptedCount(Long interceptedCount) {
            this.interceptedCount = interceptedCount;
        }
        
        public Double getAccuracyRate() {
            return accuracyRate;
        }
        
        public void setAccuracyRate(Double accuracyRate) {
            this.accuracyRate = accuracyRate;
        }
        
        public Double getInterceptRate() {
            return interceptRate;
        }
        
        public void setInterceptRate(Double interceptRate) {
            this.interceptRate = interceptRate;
        }
        
        public List<String> getBreedLabels() {
            return breedLabels;
        }
        
        public void setBreedLabels(List<String> breedLabels) {
            this.breedLabels = breedLabels;
        }
        
        public List<Long> getBreedCounts() {
            return breedCounts;
        }
        
        public void setBreedCounts(List<Long> breedCounts) {
            this.breedCounts = breedCounts;
        }
    }
}
